//服务器全部接口返回的数据类型
export interface ResponseData {
  code: number
  message: string
  ok: boolean
}

//SPU数据的ts类型
export interface SpuData {
  id?: number | string
  spuName: string
  description: string
  category3Id: string | number
  tmId: number | string //品牌ID
  spuSaleAttrList: null | SaleAttr[] //销售属性
  spuImageList: null | SpuImg[]
}

//数组：元素都是已有的SPU数据类型
export type Records = SpuData[]
//定义获取已有的SPU接口返回的数据ts类型
export interface HasSpuReponseData extends ResponseData {
  data: {
    records: Records
    total: number
    size: number
    current: number
    searchCount: boolean
    pages: number
  }
}

//所有品牌数据的ts类型
export interface TradeMark {
  id: number
  tmName: string
  logoUrl: string
}
//品牌接口返回的数据ts类型
export interface AllTradeMark extends ResponseData {
  data: TradeMark[]
}

//商品图片的ts类型
export interface SpuImg {
  id?: number
  createTime?: string
  updateTime?: string
  spuId?: number
  imgName?: string
  imgUrl?: string
  name?: string
  url?: string
}

//已有的SPU的照片墙数据的类型
export interface SpuHasImg extends ResponseData {
  data: SpuImg[]
}

// 已有的SPU销售属性值对象ts类型
export interface SaleAttrValue {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number | string
  baseSaleAttrId: number | string
  saleAttrValueName: string
  saleAttrName?: string
  isChecked?: null
}

// 存储已有的销售属性值的数组
export type spuSaleAttrValueList = SaleAttrValue[]

//销售属性对象的ts类型
export interface SaleAttr {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string
  saleAttrName: string
  spuSaleAttrValueList: spuSaleAttrValueList
  flag?: boolean
  saleAttrValue?: string
  saleIdAndValueId?: string
}

//SPU 已有的销售属性接口返回的数据ts类型
export interface SaleAttrResponseData extends ResponseData {
  data: SaleAttr[]
}

//销售属性的ts类型
export interface HasSaleAttr {
  id: number
  createTime: string
  updateTime: string
  name: string
}
//获取全部的销售属性接口返回的数据
export interface HasSaleAttrResponseData extends ResponseData {
  data: HasSaleAttr[]
}

//SKU平台属性
export interface skuAttr {
  attrId: string | number //平台属性的ID
  valueId: number | string //平台属性值的ID
}

//SKU销售属性
export interface skuSaleAttr {
  saleAttrId: number | string //属性ID
  saleAttrValueId: number | string //属性值的ID
}

export interface SkuData {
  category3Id: number | string //所属的三级分类的ID
  spuId: number | string //已有的SPU的ID
  tmId: string | number //SPU品牌的ID
  skuName: string //sku名字
  price: string | number //sku的价格
  weight: string | number //sku的重量
  skuDesc: string //sku的描述
  skuAttrValueList?: skuAttr[] //平台属性的收集
  skuSaleAttrValueList?: skuSaleAttr[] //销售属性
  skuDefaultImg: string //sku图片地址
}

//获取SKU数据接口的ts类型
export interface SkuInfoData extends ResponseData {
  data: SkuData[]
}
